# 字典 -> 键值对

# 定义字典
my_dict1 = {
    "王力宏": 99,
    "周杰伦": 88,
    "林俊杰": 77
}
# 定义空字典
my_dict2 = {}       # set() ==> 空集合
my_dict3 = dict()

print(f"字典1的内容是：{my_dict1},类型是：{type(my_dict1)}")
print(f"字典1的内容是：{my_dict2},类型是：{type(my_dict2)}")
print(f"字典1的内容是：{my_dict3},类型是：{type(my_dict3)}")

# 定义重复key的字典
my_dict1 = {
    "王力宏": 99,
    "周杰伦": 88,
    "林俊杰": 77,
    "王力宏": 88
}
print(f"重复key的字典内容是：{my_dict1}")

# 从字典中基于key获取value
my_dict1 = {
    "王力宏": 99,
    "周杰伦": 88,
    "林俊杰": 77
}
score = my_dict1["王力宏"]
print(f"王力宏的分数是：{score}")

score = my_dict1["周杰伦"]
print(f"周杰伦的分数是：{score}")

# 定义一个嵌套字典
stu_score_dict = {
    "王力宏": {
        "语文": 77,
        "数学": 66,
        "英语": 33
    },
    "周杰伦": {
        "语文": 88,
        "数学": 86,
        "英语": 55
    },
    "林俊杰": {
        "语文": 99,
        "数学": 96,
        "英语": 66
    }
}
print(f"学生的考试信息是：{stu_score_dict}")

# 从嵌套字典中获取数据
# 看一下周杰伦的语文信息
score = stu_score_dict["周杰伦"]["语文"]
print(f"周杰伦的语文分数是：{score}")


"""
    字典的常用操作
"""

my_dict = {
    "王力宏": 99,
    "周杰伦": 88,
    "林俊杰": 77
}
# 新增元素
my_dict["张信哲"] = 66
print(f"字典经过新增元素之后,结果是：{my_dict}")

# 更新元素
my_dict["周杰伦"] = 33
print(f"字典经过更新后,结果：{my_dict}")

# 删除元素
score = my_dict.pop("周杰伦")
print(f"字典中被移除了一个元素，结果：{my_dict},周杰伦的考试分数是：{score}")

# 清空元素
my_dict.clear()
print(f"字典被清空了,内容是：{my_dict}")

# 获取全部key
my_dict = {
    "王力宏": 99,
    "周杰伦": 88,
    "林俊杰": 77
}
keys = my_dict.keys()
print(f"字典的全部key：{keys}")

# 遍历字典
# 方式1：通过获取全部key的方式遍历字典
for key in keys:
    print(f"字典的key是：{key}")
    print(f"字典的value是：{my_dict[key]}")

# 方式2：直接对字典进行for循环,每一次循环都是直接得到key
for key in my_dict:
    print(f"2字典的key是：{key}")
    print(f"2字典的value是：{my_dict[key]}")

# 统计字典内的元素数量   len()















